using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._GeoAnalyticsDesktopTools._Utilities._BigDataConnections
{
    /// <summary>
    /// <para>Refresh Big Data Connection</para>
    /// <para>Refreshes an existing big data connection (BDC) and registers any new datasets that have been added to the source location.</para>
    /// <para>刷新现有大数据连接 （BDC） 并注册已添加到源位置的任何新数据集。</para>
    /// </summary>    
    [DisplayName("Refresh Big Data Connection")]
    public class RefreshBDC : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public RefreshBDC()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_bdc_file">
        /// <para>Big Data Connection File</para>
        /// <para>The BDC file to refresh.</para>
        /// <para>要刷新的 BDC 文件。</para>
        /// </param>
        public RefreshBDC(object _bdc_file)
        {
            this._bdc_file = _bdc_file;
        }
        public override string ToolboxName => "GeoAnalytics Desktop Tools";

        public override string ToolName => "Refresh Big Data Connection";

        public override string CallName => "gapro.RefreshBDC";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_bdc_file, _visible_geometry.GetGPValue(), _visible_time.GetGPValue(), _updated_bdc];

        /// <summary>
        /// <para>Big Data Connection File</para>
        /// <para>The BDC file to refresh.</para>
        /// <para>要刷新的 BDC 文件。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Big Data Connection File")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _bdc_file { get; set; }


        /// <summary>
        /// <para>Visible Geometry Fields</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the fields used to identify the geometry will be included (visible) as fields for analysis when the BDC file is used in other geoprocessing tools. When geometry fields are not visible, geometry is still applied to the dataset. The geometry visibility setting can be modified in the BDC.
        ///   <bulletList>
        ///     <bullet_item>Checked—Geometry fields will be included as fields for analysis. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Geometry fields will not be included as fields for analysis.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定在其他地理处理工具中使用 BDC 文件时，是否将用于标识几何的字段作为分析字段包括在内（可见）。当几何字段不可见时，几何仍应用于数据集。可以在 BDC 中修改几何可见性设置。
        ///   <bulletList>
        ///     <bullet_item>选中 - 几何字段将作为分析字段包括在内。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 几何字段将不作为分析字段包括在内。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Visible Geometry Fields")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _visible_geometry_value _visible_geometry { get; set; } = _visible_geometry_value._true;

        public enum _visible_geometry_value
        {
            /// <summary>
            /// <para>GEOMETRY_VISIBLE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("GEOMETRY_VISIBLE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>GEOMETRY_NOT_VISIBLE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("GEOMETRY_NOT_VISIBLE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Visible Time Fields</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the fields used to indicate the time will be included (visible) as fields for analysis when the BDC file is used in other geoprocessing tools. When time fields are not visible, time is still applied to the dataset. The time visibility setting can be modified in the BDC.
        ///   <bulletList>
        ///     <bullet_item>Checked—Time fields will be included as fields for analysis. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Time fields will not be included as fields for analysis.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定在其他地理处理工具中使用 BDC 文件时，是否将用于指示时间的字段作为分析字段包括在内（可见）。当时间字段不可见时，时间仍应用于数据集。可以在 BDC 中修改时间可见性设置。
        ///   <bulletList>
        ///     <bullet_item>选中 - 时间字段将作为分析字段包括在内。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 时间字段将不作为分析字段包括在内。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Visible Time Fields")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _visible_time_value _visible_time { get; set; } = _visible_time_value._true;

        public enum _visible_time_value
        {
            /// <summary>
            /// <para>TIME_VISIBLE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("TIME_VISIBLE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>TIME_NOT_VISIBLE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("TIME_NOT_VISIBLE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Updated BDC</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated BDC")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _updated_bdc { get; set; }


        public RefreshBDC SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}